home *** CD-ROM | disk | FTP | other *** search
- /*
- * name: lbitblt
- *
- * description: bitblt the source rectangle rect in layer sl
- * to the corresponding rectangle with origin pt
- * in the destination layer dl. the bitmap hb is
- * an optional halftone pattern.
- *
- * synopsis: lbitblt (sl, rect, dl, pt, hb, f)
- * struct layer *sl;
- * struct rectangle *rect;
- * struct layer *dl;
- * struct point *pt;
- * struct bitmap *hb;
- * int f;
- *
- * globals: pass () (pass.c)
- * delta (r/w)
- *
- * calls: layerop (layerop.c)
- * lblt (lblt.c)
- *
- * called by: this is a top level function.
- */
- #include "layers.h"
-
- struct point delta;
-
- lbitblt (sl, rect, dl, pt, hb, f)
- struct layer *sl;
- struct rectangle *rect;
- struct layer *dl;
- struct point *pt;
- struct bitmap *hb; /* halftone bitmap */
- int f;
- {
- struct listelement *srclist;
- struct listelement *ss;
- struct point p;
-
- int pass ();
-
- srclist = null;
- delta.x = (pt -> x) - (rect -> origin.x);
- delta.y = (pt -> y) - (rect -> origin.y);
- (void) layerop (sl, pass, rect, &srclist, null, null, null);
- for (ss = srclist; ss != null; ss = ss -> lst_next) {
- /*
- * ss = each element of srclist
- */
- p.x = (ss -> lst_rect.origin.x) + delta.x;
- p.y = (ss -> lst_rect.origin.y) + delta.y;
- (void) lblt (dl, ss -> lst_bp, &(ss -> lst_rect), hb, &p, f);
- }
- }